]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
inputMethod: Make set_surrounding() send also empty string
authorTakao Fujiwara <tfujiwar@redhat.com>
Tue, 31 Jan 2023 08:42:23 +0000 (17:42 +0900)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 1 Feb 2023 14:42:32 +0000 (14:42 +0000)
Empty surrounding text values needs to be sent to IBus engines
so that the engines know the focus is changed and the values are
updated.
Also InputMethod can forward the "require-surrounding-text" signal
from IBus engine to mutter.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5895
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2496>

js/misc/inputMethod.js

index 3a007d5e93f0814bf2c22cfbabaf82abe6560f73..e008e64116de4418eb5c6e37a6dc5bc27cac39f8 100644 (file)
@@ -76,6 +76,7 @@ var InputMethod = GObject.registerClass({
 
         this._context.set_client_commit_preedit(true);
         this._context.connect('commit-text', this._onCommitText.bind(this));
+        this._context.connect('require-surrounding-text', this._onRequireSurroundingText.bind(this));
         this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this));
         this._context.connect('update-preedit-text-with-mode', this._onUpdatePreeditText.bind(this));
         this._context.connect('show-preedit-text', this._onShowPreeditText.bind(this));
@@ -114,6 +115,10 @@ var InputMethod = GObject.registerClass({
         this.commit(text.get_text());
     }
 
+    _onRequireSurroundingText(_context) {
+        this.request_surrounding();
+    }
+
     _onDeleteSurroundingText(_context, offset, nchars) {
         try {
             this.delete_surrounding(offset, nchars);
@@ -235,7 +240,7 @@ var InputMethod = GObject.registerClass({
         this._surroundingTextCursor = cursor;
         this.emit('surrounding-text-set');
 
-        if (!this._context || !text)
+        if (!this._context || (!text && text !== ''))
             return;
 
         let ibusText = IBus.Text.new_from_string(text);